package com.example.demo6collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

/**
 * 目标：搞清楚Collection提供的通用集合功能
 */
public class CollectionDemo2 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();

        // 添加元素
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list); // [张三, 李四, 王五]

        // 获取集合的元素个数
        System.out.println(list.size());

        // 删除集合元素
        list.remove("李四");
        System.out.println(list);

        // 判断集合是否为空
        System.out.println(list.isEmpty()); // false

        // 清空集合
        // list.clear();
        // System.out.println(list);

        // 判断集合中是否存在某个数据
        System.out.println(list.contains("张三"));

        // 把集合转换成数组
        Object[] arr = list.toArray();
        System.out.println(Arrays.toString(arr));

        // 把集合转换成字符串数组(拓展)
        // 将列表转换为数组。由于列表的toArray方法可以接受一个IntFunction接口，因此我们提供了一个lambda表达式来创建具有指定大小的数组。
//        String[] arr2 = list.toArray(new IntFunction<String[]>() {
//            @Override
//            public String[] apply(int value) {
//                // 创建并返回一个具有指定大小的字符串数组
//                return new String[value];
//            }
//        });

        //使用Lambda表达式简化
        // String[] arr2 = list.toArray(value -> new String[value]);

        // 又可以使用方法引用简化 就得到了下面的这种形式
        String[] arr2 = list.toArray(String[]::new);
    }
}
